
const API = require('../../utils/api.js')
const pathUrl = require('../../utils/common.js')
Page({
  /**
   * 页面的初始数据
   */
  data: {
    article: {},
    comments: [],
    articleId: '',
    loading: true,
    commentLoading: false,
    showCommentInput: false,
    commentInput: '',
    userInfo:{},
    page: 1,
    hasMore: true,
    collection:{}
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    let userInfo = await API.userInfo()
    console.log('用户信息:', userInfo)
    this.setData({
      userInfo: userInfo
    })
    if (options && options.id) {
      this.setData({
        articleId: options.id
      })
      this.getArticleDetail()
      this.loadComments()
    }
    this.loadCollection();
  },

  loadCollection(){
    API.articleIsCollection(this.data.articleId).then(res=>{
      console.log('collection=',res)
      this.setData({
        collection: res
      })
    }).catch(err=>{

    })
    
  },

  /**
   * 加载帖子详情
   */
  getArticleDetail() {
    this.setData({ loading: true })
    API.getArticleDetail(this.data.articleId).then(res=>{
      console.log('帖子详情:', res)
      res.content = res.content.replace('/system/file/',pathUrl+'/system/file/')
      // 确保有isLiked和isFavorite字段
      if (res.isLiked === undefined) res.isLiked = false
      if (res.isFavorite === undefined) res.isFavorite = false
      if (res.likes === undefined) res.likes = 0
      console.log('帖子详情:', res)
      this.setData({
        article: res
      })
      this.setData({ loading: false })
    }).catch(err=>{
      console.error('加载帖子详情失败:', err)
      wx.showToast({
        title: '加载帖子详情失败',
        icon: 'none'
      })
      // 使用模拟数据
      this.setData({
        loading: false,
      })
    })
  },
  /**
   * 加载评论列表
   */
  loadComments(reset = true) {
    // 如果当前正在加载中，避免重复加载
    if (this.data.commentLoading) return
    
    if (reset) {
      this.setData({ page: 1, hasMore: true })
    }
    if (!this.data.hasMore && !reset) return
    this.setData({ commentLoading: true })
    API.getArticleComments({
      articleId: this.data.articleId,
      pageNum: this.data.page,
      pageSize: 10
    }).then(res=>{
      console.log('评论列表:', res)
      const newComments = res.records || []
      // 根据返回的数据量判断是否还有更多数据
      const hasMoreData = newComments.length === 10
      this.setData({
        comments: reset ? newComments : [...this.data.comments, ...newComments],
        page: this.data.page + 1,
        hasMore: hasMoreData,
        commentLoading: false
      })
    }).catch(err => {
      console.error('加载评论失败:', err)
      this.setData({ commentLoading: false })
      // 使用模拟数据
      if (reset) {
        const mockComments = this.getMockCommentsData()
        this.setData({
          comments: mockComments,
          hasMore: false
        })
      }
    })
  },
  
  /**
   * 删除评论
   */
  deleteComment(e) {
    const commentId = e.currentTarget.dataset.commentId
    wx.showModal({
      title: '确认删除',
      content: '确定要删除这条评论吗？',
      success: (res) => {
        if (res.confirm) {
          API.deleteComment(commentId).then(res=>{
              console.log('删除评论:', res)
              this.loadComments()
            }).catch(err=>{
              console.error('删除评论失败:', err)
              wx.showToast({
                title: '删除失败',
                icon: 'none'
              })
            })
        }
      }
    })
  },
  


  /**
   * 显示评论输入框
   */
  showCommentInput() {
    console.log('showCommentInput called')
    this.setData({
      showCommentInput: true,
      showReplyInput: false,
      commentInput: ''
    })
  },

  /**
   * 隐藏评论输入框
   */
  hideCommentInput() {
    console.log('hideCommentInput called')
    this.setData({
      showCommentInput: false,
      commentInput: ''
    })
  },

  /**
   * 隐藏所有输入框（点击遮罩层时调用）
   */
  hideAllInputs() {
    console.log('hideAllInputs called')
    this.setData({
      showCommentInput: false,
      commentInput: ''
    })
  },

  /**
   * 评论输入
   */
  onCommentInput(e) {
    this.setData({
      commentInput: e.detail.value
    })
  },
  /**
   * 提交评论
   */
  async submitComment() {
    const content = this.data.commentInput.trim()
    if (!content) {
      wx.showToast({
        title: '评论内容不能为空',
        icon: 'none'
      })
      return
    }
     this.setData({ loading: true })
    API.addComment({
      articleId: this.data.articleId,
      content: content
    }).then(res=>{
      this.setData({
        showCommentInput: false,
        commentInput: ''
      })
      wx.showToast({
        title: '评论成功',
        icon: 'success'
      })
       this.setData({ loading: false })
       // 重置并重新加载评论列表
       this.loadComments(true)
    }).catch(err=>{
      console.error('提交评论失败:', err)
      this.setData({ loading: false })
      wx.showToast({
        title: '评论失败',
        icon: 'none'
      })
    })
  },

  /**
   * 格式化时间
   */
  formatTime(date) {
    const year = date.getFullYear()
    const month = (date.getMonth() + 1).toString().padStart(2, '0')
    const day = date.getDate().toString().padStart(2, '0')
    const hour = date.getHours().toString().padStart(2, '0')
    const minute = date.getMinutes().toString().padStart(2, '0')
    
    return `${year}-${month}-${day} ${hour}:${minute}`
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 切换点赞状态
   */
  toggleLike() {
    let temp = this.data.collection;
    temp.zan = temp.zan=='1'? '0':'1'
    API.articleCollectionOperate(temp).then(res=>{
      // 显示提示信息
      wx.showToast({
        title: temp.zan=='1' ? '取消点赞' : '点赞成功',
        icon: 'success',
        duration: 1500
      })
      this.loadCollection();
    }).catch(err=>{
      // 显示提示信息
      wx.showToast({
        title: '操作失败',
        icon: 'none',
        duration: 1500
      })
    })
  },

  /**
   * 切换收藏状态
   */
  toggleFavorite() {
    
    let temp = this.data.collection;
    temp.collection = temp.collection=='1'? '0':'1'
    API.articleCollectionOperate(temp).then(res=>{
      // 显示提示信息
      wx.showToast({
        title: temp.collection=='1' ? '取消收藏' : '收藏成功',
        icon: 'success',
        duration: 1500
      })
      this.loadCollection();
    }).catch(err=>{
      // 显示提示信息
      wx.showToast({
        title: '操作失败',
        icon: 'none',
        duration: 1500
      })
    })
  },

  /**
   * 分享文章
   */
  shareArticle() {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    })
    
    wx.showToast({
      title: '分享功能已打开',
      icon: 'none',
      duration: 2000
    })
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getArticleDetail()
    this.loadComments()
    wx.stopPullDownRefresh()
  },

  /**
   * 加载更多评论
   */
  loadMoreComments() {
    // 调用loadComments方法加载下一页评论
    this.loadComments(false)
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: this.data.post.title || '网球爱好者交流',
      path: `/pages/post-detail/post-detail?id=${this.data.postId}`,
      imageUrl: this.data.post.images && this.data.post.images[0] || '/images/share-forum.jpg'
    }
  }
})